package com.ruicar.afs.cloud.risk.api.notice;


import com.ruicar.afs.cloud.risk.api.dto.tortoise.TortoiseQueryBean;
import com.ruicar.afs.cloud.risk.api.dto.tortoise.TortoiseResultNotice;
import com.ruicar.afs.cloud.risk.api.dto.tortoise.notice.*;
import com.ruicar.afs.cloud.risk.api.dto.tortoise.request.GwtExposureData;
import com.ruicar.afs.cloud.risk.api.dto.tortoise.request.TortoiseExposureReq;

import java.util.List;

/**
 * @Description
 * @Author Peng Jinbo
 * @Date 2020/07/31 10:59
 */
public interface TortoiseNoticeProcessor {

    /**
     * 正式进件
     * Author Peng Jinbo
     * Normal apply *
     *
     * @param resultNotice result notice
     */
    void normalApply(TortoiseResultNotice<TortoiseApplyNoticeInfo> resultNotice);

    /**
     * 预审/二手车预授信
     * Author Peng Jinbo
     * Prev approve *
     *
     * @param resultNotice result notice
     */
    void prevApprove(TortoiseResultNotice<TortoisePrevApproveNoticeInfo> resultNotice);

    /**
     * 反欺诈推送
     * Author Peng Jinbo
     * Fraud push *
     *
     * @param resultNotice result notice
     */
    void fraudPush(TortoiseResultNotice<TortoiseFraudPushNoticeInfo> resultNotice);

    /**
     * 反欺诈手工触发
     * Author Peng Jinbo
     * Hand fraud *
     *
     * @param resultNotice result notice
     */
    void handFraud(TortoiseResultNotice<TortoiseHandFraudNoticeInfo> resultNotice);

    /**
     * 决策引擎手工调用
     * Author Peng Jinbo
     * Hand decision *
     *
     * @param resultNotice result notice
     */
    void handDecision(TortoiseResultNotice<TortoiseHandDecisionNoticeInfo> resultNotice);

    /**
     * 获取面签照片
     * @param applyNo apply no
     * @return the image
     * @Author Peng Jinbo Gets image *
     */
    String getImage(String applyNo);

    /**
     * 获取敞口信息
     * @return the exposure data
     * @Author Peng Jinbo Gets exposure data *
     */
    List<GwtExposureData> getExposureData(TortoiseExposureReq exposureReq);


    TortoiseQueryBean getData(String mainId,String scene);

}
